Computing devices configured to interact with a human user often include peripheral components enabling the computing device to receive input from the user and display or otherwise produce output. One common example of an input peripheral is a keyboard, and one common example of an output peripheral is a display screen. Typically, a user strikes the keys of the keyboard, resulting in the symbols associated with the keys struck being displayed on the screen. Traditional keyboards generally provide a raised, depressible profile for the keys, which tends to catch a keystroke and provide a tactile response to the user, such that the user can feel, as well as see on the screen, the result of the keystroke.
In some computing devices, e.g., mobile computing devices such as cellular phones, it can be advantageous to combine the functionality of the screen with the keyboard. The screen can thus display a “virtual keyboard” (also referred to as a “soft keyboard”) at all times or merely when user input is desired. The virtual keyboard can occupy a touch-sensitive region of the screen and can be partitioned by visual representations of the keys. The virtual keyboard can be configured to associate a keystroke landing in one of the key areas with the associated key. This combined functionality of the display screen, serving as both an input and an output peripheral, can reduce the size of the device, without requiring further reductions in the size of the keyboard.
However, with mobile devices being relatively small, the keyboard area can be significantly smaller than a traditional keyboard. Further, even small conventional keyboards can provide tactile feedback, while virtual keyboards may not. Accordingly, the potential for typing errors can be greater on some virtual keyboards over similarly-sized convention keyboards, especially when a user types rapidly. For example, since the virtual keyboard can be relatively small, the key or intended strike area can be smaller than the user's finger, such that the finger obscures the user's view of the strike area. Further, the lack of tactile feedback or a raised button can limit a user's ability to feel a difference between the areas associated with two adjacent keys. These factors can combine into an increase in the frequency at which a user misses the intended strike area, resulting in an ambiguous or erroneous keystroke.
Furthermore, the lack of tactile feedback can also result in a user's finger undergoing a lateral “swiping” movement across the virtual keyboard as part of the keystroke, despite a single point keystroke being intended and/or perceived by the user. This can frequently be experienced in cases where the typist is using two (or more) fingers (e.g., both thumbs) to input keystrokes. Such swiping, however, can lead to keystrokes that are partially in and partially out of an area associated with a key, miss the key area entirely, or even are partially in two areas associated with two different keys. This can further lead to an increase in the frequency of ambiguous and/or erroneously interpreted keystrokes.
However, virtual keyboards offer several advantages over conventional keyboards, including increased display screen size, and thus several solutions to such accuracy challenges have been proposed and implemented. For example, some designers have determined what the “true middle” of a finger strike can be, based on probability, usage history, and human perception and targeting of fingers. Further, some designs employ methods of adjusting the target area on the keyboard associated with a key, without adjusting the displayed key area, so as to capture the area the user tends to strike when inputting a certain key. Moreover, a variety of heuristics and other processes have been developed for making a decision between two keys for an ambiguous keystroke (i.e., “disambiguation”). Such processes can be contextual, with respect to the text being entered, or based on historical usage.
However, such processes generally do not consider the lateral swipe in the keystroke, and can still lead to ambiguous or erroneously interpreted keystrokes. Such processes also often fail to consider that, for any given key, a user can tend to strike several different regions, with differing swipe patterns, depending, for example, on the hand or even the particular finger being used to make the keystroke. This can result in the historical, usage-based schemes being inaccurate, or at least incomplete.
What is needed, then, are improved devices and methods for selecting keys based on keystrokes on a virtual keyboard.